package cn.com.colasoft.thread.concurrentcontainer;

import java.util.concurrent.LinkedTransferQueue;

/**
 * 这种队列必须先有消费者,如果不是先有消费者,那么transfer将处于阻塞状态
 * 这个队列的好处就在于: 如果之前有消费者已经注册到队列上,那么消息将不会扔进队列,而是直接传给消费者,从而效率更高
 */
public class TransferQueueTest {
	public static void main(String[] args) throws InterruptedException {
		LinkedTransferQueue<String> strs = new LinkedTransferQueue<>();
		
		new Thread(() -> {
			try {
				System.out.println(strs.take());
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}).start();
		
		strs.transfer("aaa");
		
		//strs.put("aaa");
		

/*		如果先有生产者,后有消费者那么生产的线程将会处于阻塞状态
		new Thread(() -> {
			try {
				System.out.println(strs.take());
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}).start();*/
	}
}
